Method and apparatus for providing subsidiary data synchronous to primary content data

ABSTRACT

Primary content data is received from an external source and subsidiary data is obtained which corresponds to the primary content data, wherein the subsidiary data is independent of the primary content data. The subsidiary data is provided synchronous to the primary content data.

RELATED APPLICATIONS

This application is a continuation of prior application Ser. No.08/924,538, filed on Sep. 05, 1997; which claims priority to ProvisionalApplication No. 60/024,704 to Goldschmidt et al., for “ System forPresenting ‘Extracast’ Information for 1996, which is assigned to theassignee of the present application.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention pertains to the display and playback of videoand/or audio data. More particularly, this invention relates toproviding subsidiary data synchronous to primary content data.

2. Background

A recent trend in the electronics and computer industry is theconvergence of computer systems and more traditional entertainmentsystem components. Such convergence allows an increasingly broad rangeof information to be made available for system users over and above thebroadcast television programming which has long been provided viaconventional televisions.

One method of providing additional information to users to supplementthe viewing of a television program is to provide additional informationduring the vertical blanking interval (VBI) of the program. However,this method limits the user to receiving information only during theprogram and only while tuned to the appropriate channel. Changing thechannel during the program or temporarily turning off the televisionduring part of the program can result in the loss of part of theadditional information. Furthermore, the amount of data which can betransferred during the VBI of a program is limited due to the relativelysmall bandwidth of the VBI. Thus, it would be beneficial to provide amore robust way to provide additional information to supplement theviewing of television programming.

Therefore, a need exists for a method and apparatus for more effectiveprovision of subsidiary data to supplement primary content data.

SUMMARY OF THE INVENTION

According to one embodiment of the present invention, primary contentdata is received from an external source and subsidiary data is obtainedwhich corresponds to the primary data, wherein the subsidiary data isindependent of the primary content data. The subsidiary data is providedsynchronous to the primary data.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is illustrated by way of example and notlimitation in the figures of the accompanying drawings, in which likereferences indicate similar elements and in which:

FIG. 1 is a block diagram illustrating a system architecture forproviding subsidiary data complementary to primary content dataaccording to one embodiment of the present invention;

FIG. 2 is a diagram illustrating a data structure storing multipleportions of subsidiary data according to one embodiment of the presentinvention;

FIG. 3 is a flowchart illustrating the steps followed in providingsubsidiary data to supplement primary content data according to oneembodiment of the present invention;

FIG. 4 is a flowchart illustrating the steps followed in synchronizingsubsidiary data to primary content data according to one embodiment ofthe present invention;

FIG. 5 is a block diagram illustrating the system components of oneembodiment of an entertainment system in which the present invention maybe practiced; and

FIG. 6 illustrates another embodiment of a hardware system suitable foruse with the present invention.

DETAILED DESCRIPTION

In the following detailed description numerous specific details are setforth in order to provide a thorough understanding of the presentinvention. However, it will be understood by those skilled in the artthat the present invention may be practiced without these specificdetails. In other instances well known methods, procedures, components,and circuits have not been described in detail.

Some portions of the detailed descriptions which follow are presented interms of algorithms and symbolic representations of operations on databits within a computer memory. These algorithmic descriptions andrepresentations are the means used by those skilled in the dataprocessing arts to most effectively convey the substance of their workto others skilled in the art. An algorithm is here, and generally,conceived to be a self-consistent sequence of steps leading to a desiredresult. The steps are those requiring physical manipulations of physicalquantities. Usually, though not necessarily, these quantities take theform of electrical or magnetic signals capable of being stored,transferred, combined, compared, and otherwise manipulated. It hasproven convenient at times, principally for reasons of common usage, torefer to these signals as bits, values, elements, symbols, characters,terms, numbers, or the like. It should be borne in mind, however, thatall of these and similar terms are to be associated with the appropriatephysical quantities and are merely convenient labels applied to thesequantities. Unless specifically stated otherwise as apparent from thefollowing discussions, it is appreciated that throughout the presentinvention, discussions utilizing terms such as “processing” or“computing” or “calculating” or “determining” or “displaying” or thelike, refer to the action and processes of a computer system, or similarelectronic computing device, that manipulates and transforms datarepresented as physical (electronic) quantities within the computersystem's registers and memories into other data similarly represented asphysical quantities within the computer system memories or registers orother such information storage, transmission or display devices.

FIG. 1 is a block diagram illustrating a system architecture forproviding subsidiary data complementary to primary content dataaccording to one embodiment of the present invention. The systemarchitecture includes primary data receiver 105, video/audio control115, programming database control 125, and subsidiary data control 135coupled together as illustrated. Data receiver 105 receives primarycontent data 107 from an external source (not shown), while subsidiarydata control 135 receives subsidiary data 117 from another externalsource (not shown).

Data receiver 105 is communicatively coupled to subsidiary data control135 and to video/audio control 115. In the illustrated embodiment, datareceiver 105 can receive primary content data 107 from any of a widerange of external sources, including cable television providers, digitalsatellite system providers, traditional analog television providers,digital cable providers, digital broadcast providers, video cassettes,digital video disks, etc. Another possible source is a programmingprovider which provides Internet broadcasts of video and/or audio datavia the Internet. It is also to be appreciated that primary content data107 can be provided to data receiver 105 using any of a wide range ofconventional mediums, including both wireless (e.g., radio frequency)and wired (e.g., cable), and can be received directly (e.g., using asatellite dish), or indirectly (e.g., via a network such as the Internetor a local area network). Data receiver 105 identifies to subsidiarydata control 135 from which one of multiple external sources datareceiver 105 is receiving data. This identification includes both thesource as well as the channel of the source (if appropriate) to whichdata receiver 105 is currently “tuned”.

In one embodiment of the present invention, primary content data 107 istelevision programming content data. In alternate embodiments, primarycontent data 107 is another non-television programming type of videoand/or audio data.

In one embodiment, data receiver 105 receives primary content data 107via a television tuner board or card, such as either the VIDEO RAGE orVIDEO RAGE II graphics cards available from STB Systems, Inc. ofRichardson, Tex. In another embodiment, data receiver 105 receivesprimary content data 107 via a digital video broadcast (DVB) receivercard. However, in alternate embodiments other conventional televisiontuner boards or devices can be used. The operation of such tuner boardsand devices is well-known to those skilled in the art and thus will notbe discussed further except as it pertains to the present invention.

Whatever the source, primary content data 107 includes video and/oraudio data which data receiver 105 provides to video/audio control 115.In one embodiment of the present invention, data receiver 105 digitizesprimary content data 107 and provides the digital representation of theprimary content data 107 to video/audio control 115. In alternateembodiments where primary content data 107 is already in digital form,or where video/audio control 115 expects data in analog form, suchdigitization is not necessary. Video/audio control 115 forwards thevideo portion of the data to a display device for display to a user andthe audio portion of the data to a playback device for playing to theuser.

Video/audio control 115 can also receive subsidiary data from subsidiarydata control 135. This subsidiary data is intended to supplement theprimary content data 107 and provide additional information to the user,typically information which is complementary to primary content data107. This subsidiary data is received by subsidiary data control 135 assubsidiary data 117, and, as discussed in more detail below, is eitherstored for later use or passed through to video/audio control 115.

Video/audio control 115 combines the primary content data with thesubsidiary data and forwards the combined data to the display and audiodevices. It is to be appreciated that additional components (not shownin FIG. 1) may be situated between video/audio control 115 and thedisplay and playback devices, such as a display adapter having videomemory which stores the data prior to providing the data to the displaydevice. Video/audio control 115 separates the display into multiplesections, at least one of which is used to display the video of theprimary content data and at least one other of which is used to displaythe video of the subsidiary data. The combining of two different videosources for concurrent display is well-known to those skilled in the artand thus will not be discussed further except as it pertains to thepresent invention.

It is to be appreciated that video/audio control 115 can separate thedisplay into multiple sections in any of a wide variety of formats.Examples of such separation formats include, but are not limited to, thefollowing: top and bottom of either equal or unequal sizes, left andright of either equal or unequal sizes, border and center, and onewindow within another (e.g., using a picture-in-picture type format). Inthe illustrated embodiment, subsidiary data 117 indicates howvideo/audio control 115 is to separate the display. Alternatively, howthe display is to be separated can be pre-programmed into video/audiocontrol 115 or subsidiary data control 135.

Video/audio control 115 also combines the audio data from the primarycontent data with the audio data from the subsidiary data and forwardsthe combined audio data to the playback device. The combining of twodifferent audio sources for concurrent playback is well-known to thoseskilled in the art and thus will not be discussed further except as itpertains to the present invention.

In the illustrated embodiment, subsidiary data 117, also referred to as“extracast” information or data, comprises additional multimedia datawhich is designed to supplement one or more programs from primarycontent data 107. Examples of such additional multimedia data includereference information regarding the programs, additional biographicalinformation regarding the actors, guests, or participants of a program,advertisements, etc. In one implementation, subsidiary data 117 includesmultiple HyperText Markup Language (HTML) documents.

The source of subsidiary data 117 can be any of a wide range of datasources.

Examples of such sources include, but are not limited to, the sources ofprimary content data 107. Additional examples of such sources includefile servers accessed via a dial-up connection or network (such as alocal area network or the Internet) and volatile or nonvolatile storagedevices such as magnetic diskettes or CD-ROMs. In the illustratedembodiment subsidiary data 117 is independent of primary content data107. The receipt of primary content data 107 and subsidiary data 117 areindependent of each other. Thus, a portion of subsidiary data 117corresponding to a particular program can be received in advance of thatparticular program. In one implementation, subsidiary data 117corresponding to a particular program is received during the verticalblanking intervals (VBIs) of one or more predecessor programs.

Subsidiary data control 135 includes reception logic 137,storage/retrieval logic 139, synchronization logic 141, and userinterface logic 143. Reception logic 137 controls reception ofsubsidiary data 117 from an external source and provides subsidiary data117 to either storage/retrieval logic 139 or synchronization logic 141.Subsidiary data 117 includes one or more portions each of whichcorresponds to one or more programs which can be received as primarycontent data 107 by data receiver 105. In one embodiment, each portionof subsidiary data 117 includes an identifier indicating to whichprogram(s) of primary content data 107 the particular portioncorresponds.

According to one mode of operation, reception logic 137 providesreceived subsidiary data 117 to storage/retrieval logic 139, which inturn stores the received subsidiary data to a local long-term storagedevice for subsequent retrieval. In the illustrated embodiment,storage/retrieval logic 139 also maintains a storage database whichidentifies each portion of subsidiary data available to subsidiary datacontrol 135 as well as an identifier indicating to which program eachportion corresponds. Thus, by accessing the storage database, subsidiarydata control 135 can readily determine which portion of subsidiary data,if any, corresponds to any given program. The storage database couldidentify subsidiary data for all of primary content data 107, oralternatively only that subsidiary data which is stored in the locallong-term storage device. In another alternate embodiment, rather thanmaintaining a separate storage database, an identifier of the portion ofsubsidiary data to be provided is stored in a programming guide. Thus,the portion is immediately identified by storage/retrieval logic 139using this identifier rather than requiring an additional lookup in thestorage database. This mode of operation may be used for example insituations where the portion of subsidiary data 117 which corresponds toa program of primary content data 107 is received prior to reception ofthe program, or situations where the user desires long-term storage ofthe portion of subsidiary data 117, such as for future use.

In another mode of operation, subsidiary data control 135 forwards thesubsidiary data directly to the display device upon receipt. In thismode of operation, reception logic 137 provides received subsidiary data117 to synchronization logic 141, which in turn synchronizes subsidiarydata 117 to primary content data 107. It is to be appreciated thatsubsidiary data 117 may be stored temporarily in system memory duringthis reception and synchronization process. This mode of operation maybe used for example in situations where the portion of subsidiary data117 corresponding to a currently received program of primary contentdata 107 is being received approximately concurrently with reception ofthe program.

In the illustrated embodiment of the present invention, if the desiredsubsidiary data is not available in the local storage device, thenstorage/retrieval logic 139 forwards the request to reception logic 137.In this situation, reception logic 137 accesses a remote location, suchas a remote server, to obtain the desired subsidiary data. In oneimplementation, the identity of the remote location for such subsidiarydata is pre-programmed into reception logic 137. In otherimplementations, the identity of the remote location is stored in theprogramming guide, discussed below, or alternatively received as part ofprimary content data 107.

According to one embodiment of the present invention, accesses to aremote server, or other remote location, to obtain the subsidiary dataare monitored by the remote server. In this embodiment, the remoteserver can then charge users a fee for accessing the subsidiary data onthe remote server. The amount of such charges could be based on anaccess time basis, subject matter basis, amount of data retrieved basis,etc. Such fees could be collected in any of a wide range of manners,including bills, charges to a credit card, applying to a credit accountmaintained at the remote server, etc.

When enabled, synchronization logic 141 controls synchronization ofsubsidiary data 117 to primary content data 107. In the illustratedembodiment, data receiver 105 notifies subsidiary data control 135 ofany changes in the channel and/or source of primary content data towhich the television tuner board coupled to data receiver 105 iscurrently “tuned”. In an alternate embodiment, subsidiary data control135 repeatedly inquiries data receiver 105 as to which channel thetelevision tuner board is currently “tuned”, thereby alleviatingreceiver 105 and/or the television tuner board of the burden ofdetecting and notifying a channel and/or source change to control 135.In another alternate embodiment, an additional agent (not shown)controls the television tuner board to “tune” to a particular channeland/or source, and this additional agent also notifies subsidiary datacontrol 135 of the current channel and/or source to which the televisiontuner board is currently “tuned”.

Based on the channel and source to which the television tuner board, andthus data receiver 105, is “tuned”, synchronization logic 141 inquiriesprogramming database control 125 as to the identity of the program beingreceived from the identified channel/source combination. Programmingdatabase control 125 is coupled to a programming guide corresponding toprimary content data 107. The programming guide provides programminginformation corresponding to various media (cable, RF broadcast,satellite, audio programming, Internet programming, etc.), channelsavailable in each medium, and program time slots. This information isavailable for each day of the week (Sunday-Saturday), and for each dayof the month (1-31), as appropriate. In one implementation, theprogramming guide includes a listing for each channel of each source ofprimary content data 107. Additional information can also be stored forthe various programs in the programming guide. Examples of suchadditional information include; an identifier of a portion of subsidiarydata, a location of the portion of subsidiary data, the length of theprogram, a program description/synopsis, actors/actresses, director,date of first airing or release, program genre, channel call-sign,rating, critique, etc. In one implementation, the programming guide isupdated periodically by accessing a remote server (not shown) via atelephone or network connection or via other mediums such as distributeddiskettes or CD-ROMs, a VBI of a television signal, or an additionaldata stream corresponding to a digital video signal (e.g., from asatellite system).

In alternate embodiments of the present invention, the identity of theprogram being received as primary content data 107 at any given momentcan be ascertained without the use of the programming guide. Suchadditional embodiments include, but are not limited to, additionaldatabases or libraries of local sources such as video cassettes ordigital video disks, and receiving an identifier from the program sourceitself (e.g., an identifier at the beginning of and perhaps periodicallythroughout the program).

According to one embodiment of the present invention, programmingdatabase control 125 makes the programming guide available for useraccess. In this embodiment, programming database control 125, oralternatively another component (not shown), provides an interface, suchas a graphical user interface, which allows a user to interact withprogramming database control 125 and thereby access the contents of theprogramming guide.

Synchronization logic 141 accesses the current system time, such as froman internal clock (not shown), and forwards the channel, source, andcurrent system time information to programming database control 125.Programming database control 125 uses this information to access theprogramming guide and obtain an identifier of the program correspondingto the channel, source, and current system time. The identifier of theprogram is then returned to synchronization logic 141.

Synchronization logic 141 forwards the identifier of the program tostorage/retrieval logic 139, which accesses the storage database todetermine whether any subsidiary data corresponds to the program.Storage/retrieval logic 139 indicates to synchronization logic 141whether such corresponding information exists. If no such correspondinginformation exists, then synchronization logic 141 does not provide anysubsidiary data to accompany the primary content data. However, if suchcorresponding information exists, then synchronization logic 141 obtainsand provides the appropriate pieces of the corresponding portion forconcurrent display with the primary content data, as discussed in moredetail below.

Each portion of subsidiary data stored in the storage device includesone or more corresponding time periods. Each of these time periodsidentifies a piece of the portion of subsidiary data which correspondsto a particular time in the program of the primary content data. Thesetime periods are included as part of subsidiary data 117 received bysubsidiary data control 135 and are used by synchronization logic 141 inobtaining the subsidiary data.

Synchronization logic 141 accesses the programming guide via programmingdatabase control 125 to identify the current temporal position in theprogram. In other words, the programming guide identifies the time atwhich the current program started and, based on the current system time,synchronization logic 141 calculates the elapsed time of the program.Using the elapsed time of the program and the time period of the portionof subsidiary data 117, synchronization logic 141 identifies which pieceof the corresponding subsidiary data 117 portion is to be provided viathe display device. Thus, it can be said that the display of thesubsidiary data is synchronized to the display of the primary contentdata.

According to another embodiment of the present invention, rather thanincluding multiple time periods, each piece of a portion of subsidiarydata includes a particular “tag value” or identifier. In thisembodiment, primary content data 107 includes a tag value or identifieridentifying which piece of subsidiary data is currently to be providedwith the program of primary content data 107. In one implementation,this tag value or identifier is transmitted during the vertical blankinginterval for primary content data 107. In response to the received tagvalue, data receiver 105 transmits the tag value or identifier tosynchronization logic 141 of subsidiary data control 135 forsynchronizing the identified piece of subsidiary data to the program.Thus, in this embodiment, the tag values received as part of primarycontent data 107 indicate the elapsed time of the program.

FIG. 2 is a diagram illustrating a data structure storing multipleportions of subsidiary data according to one embodiment of the presentinvention. FIG. 2 illustrates multiple (X) portions 202 and 204, eachincluding a portion identifier, multiple time periods and correspondingdata pieces. As illustrated, portion 202 includes a portion identifier211, multiple (N) time period identifiers 212, 213, and 214, andmultiple (N) corresponding data pieces 217, 218, and 219, respectively.Similarly, portion 204 includes portion identifier 221, multiple (M)time period identifiers 222 and 223, and multiple (M) corresponding datapieces 227 and 228, respectively.

In alternate embodiments, data structure 200 includes a portion for onlyone program rather than multiple programs. In other alternateembodiments, certain portions include only a single time period andcorresponding data piece.

Returning to FIG. 1, subsidiary data control 135 also includes userinterface logic 143. User interface logic 143 provides an interface,such as a graphical user interface (GUI), to users of the system whichallows the users to interact with storage/retrieval logic 139. Userinterface logic 143 provides a user with prompts which allow the user toenter search terms to search the storage database. According to oneembodiment, user interface logic 143 also provides a user with promptswhich allow the user to identify a particular portion of subsidiary dataand view the data independent of the receipt of the correspondingprogram via primary content data 107. By way of example, using interfacelogic 143, a user is able to view the subsidiary data prior to orsubsequent to the receipt of the corresponding program.

In an alternate embodiment of the present invention, user interfacelogic 143 is an interface which provides other applications with accessto storage/retrieval logic 139 and thus the stored subsidiary data. Inone such alternate embodiment, user interface logic 143 is anApplication Programming Interface (API) which can be accessed by otherapplications. In another such alternate embodiment, user interface logic143 instructs another interface unit (not shown) to display thesubsidiary data.

In one embodiment of the present invention, synchronization logic 141can be enabled and disabled by a user. In one implementation, thisenablement option is made available to the user via an on-screenprogramming guide. As discussed above, a user is able to access theprogramming guide via programming database control 125 for informationon the programs available in primary content data 107. In thisimplementation, an additional user-selectable icon is provided to theuser which allows the user to toggle enablement of subsidiary data. Whenselected by a user, programming database control 125 notifiessynchronization logic 141 of whether subsidiary data provision has beenenabled or disabled.

In an alternate embodiment of the present invention, synchronizationlogic 141 is coupled to a database which cross-references channel,source, and time combinations to subsidiary data. Thus, in thisalternate embodiment, each portion of subsidiary data is identifiedaccording to a channel and source combination rather than a programname.

In an alternate embodiment of the present invention, data receiver 105and video/audio control 115 are both implemented on the television tunerboard. Thus, in this embodiment, subsidiary data control 135 receives anindication of the current source and channel, as appropriate, of primarycontent data 107 and in response forwards the corresponding subsidiarydata to the tuner board.

In the discussions above, reference is made to the use of a single tunerboard. However, in alternate embodiments multiple tuner boards, ormultiple sets of “tuning” logic on a single board, of the same oxdifferent types can be used concurrently with the present invention.Thus, in these alternate embodiments, multiple programs of primarycontent data 107 can be “tuned” simultaneously and either selectively orconcurrently provided to video/audio control 115.

FIG. 3 is a flowchart illustrating the steps followed in providingsubsidiary data to supplement primary content data according to oneembodiment of the present invention. Synchronization logic 141 firstchecks whether provision of subsidiary data for the currently “tuned”channel is enabled, step 305. If provision of subsidiary data is notenabled, then synchronization logic 141 repeats step 305 until provisionof subsidiary data is enabled. However, if display of subsidiary data isenabled, then synchronization logic 141 checks whether a new channel orsource has been “tuned”, step 310. If a new channel or source has been“tuned”, then synchronization logic 141 returns to step 305 to checkwhether provision of subsidiary data for the newly “tuned” channel isenabled. However, if a new channel or source has not been “tuned”, thensynchronization logic 141 checks whether subsidiary data is availablefor the currently “tuned” channel and source, step 315. As discussedabove, the subsidiary data could be available either locally orremotely. If subsidiary data is not available, then synchronizationlogic 141 returns to step 305.

However, if subsidiary data is available, synchronization logic 141obtains the subsidiary data and synchronizes the subsidiary data to thecurrently “tuned” channel and source, step 320. Synchronization logic141 then displays and plays back a piece of the synchronized subsidiarydata via the display and playback devices concurrently with thecurrently “tuned” channel and source, step 325. Synchronization logic141 then checks whether additional pieces of subsidiary data for thecurrently “tuned” channel and source are available, step 330. If so,then these additional pieces are also displayed and played back.However, if there is no additional subsidiary data for the currently“tuned” channel, then synchronization logic 141 returns to step 305 toawait enablement for a newly “tuned” channel or source.

It should be noted that synchronization logic 141 can interrupt thechecking, synchronization, and display and playback steps 315, 320, 325,and 330 at any time. Such interrupting is done, for example, in responseto a change in the currently “tuned” channel or source, after whichsynchronization logic 141 returns to step 305.

In one embodiment of the present invention, step 315 is optional. Inthis embodiment, display and playback of subsidiary data can be enabledonly for those programs which have corresponding subsidiary data. Thus,there is no need to perform the dual check of steps 305 and 315.

In another embodiment of the present invention, step 305 is optional. Inthis embodiment, subsidiary data control 135 only activatessynchronization logic 141 when display of subsidiary data is enabled.Furthermore, once display of subsidiary data is disabled, subsidiarydata control 135 deactivates synchronization logic 141. Thus, norepeated checking of whether subsidiary data display is enabled isnecessary.

FIG. 4 is a flowchart illustrating the steps followed in synchronizingsubsidiary data to primary content data according to one embodiment ofthe present invention. Initially, synchronization logic 141 identifiesthe elapsed time of the program, step 405. Then, synchronization logic141 determines a piece of the subsidiary data portion corresponding. tothe program with a time period corresponding to the elapsed time of theprogram, step 410. Synchronization logic 141 then obtains that piece ofthe subsidiary data for provision to the user, step 415.

FIG. 5 is a block diagram illustrating the system components of oneembodiment of an entertainment system in which the present invention maybe practiced. As will be discussed in greater detail below, system 500includes system controller or machine 504 which, in one embodiment, isconfigured to store a programming guide and subsidiary data. System 500may also be referred to as a “convergence system” designed to integratethe world of entertainment systems and computing platforms. In oneembodiment, system controller 504 is a computer system incorporated withthe teachings of the present invention, as will be discussed in furtherdetail below. In another embodiment, system controller 504 is a“set-top” box endowed with the necessary processing power andincorporated with the teachings of the present invention.

As shown, FIG. 5 illustrates but one example of an entertainment systemincorporated with the teachings of the present invention. In theillustrated embodiment, system 500 includes television/monitor 502,video recorder/playback device 506, digital video disk (referred to as“DVD”, which is currently used as an acronym for digital video disk,although it appears that the usage is being changed to digital versatiledisk to reflect the use of DVD technology for data other than video)recorder/playback device 514, audio/video tuner and amplifier 510, audioplayback/recorder device 522 and compact disc player 512, all coupled toa common input/output (I/O) bus 508. It is to be appreciated that theuse of the common I/O bus 508 is for ease of explanation in the diagramonly, and that a number of alternative means of routing input and outputsignals may be beneficially employed. For example, audio input andoutput could be routed with an appropriate number of independent audio“patch” cables, video signals may be routed with independent coaxialcable, and control signals may be routed along a two-wire serial line,or through infrared (IR) communication signals or radio frequency (RF)communication signals. It is also to be appreciated that videorecorder/playback device 506, DVD 514, audio playback/recorder device522, and compact disc player 512 can be single-disk or single-cassettedevice, or alternatively can be multiple-disk or multiple-cassettedevices.

In addition, system 500 includes speaker system 516, microphone 518,video camera 520 and a wireless input/output (I/O) control device 532.In one embodiment, wireless I/O control device 532 is an entertainmentsystem remote control unit which communicates with the components ofsystem 500 through IR signals. In another embodiment, wireless I/Ocontrol device 532 may be a wireless keyboard and cursor positioningdevice that communicates with the components of system 500 through IRsignals or RF signals. In yet another embodiment, wireless I/O controldevice 532 may be an I/R remote control device similar in appearance toa typical entertainment system remote control with the added feature ofa track-ball, which allows a user to position a cursor on a display ofsystem 500.

At the core of the system is system controller 504 incorporated with thefeatures of the present invention, configured to control a wide varietyof features associated with each of the system components. As depicted,system controller 504 is coupled, either directly or indirectly, to eachof the system components, as necessary, through I/O bus 508. In oneembodiment, in addition to or in place of I/O bus 508, system controller504 is configured with a wireless communications transmitter (ortransceiver), which is capable of communicating with the systemcomponents via IR signals or RF signals 508′. Regardless of the controlmedium, system controller 504 is configured to control one or more ofthe entertainment system components of system 500, although it isunderstood that each of the components may be individually controlledwith wireless I/O device 532.

As illustrated in FIG. 5, system 500 can be configured to receiveprimary content data and subsidiary data from a wide variety of sources.In one embodiment, for example, system 500 receives primary content dataand subsidiary data from any or all of the following sources: cablebroadcast 524, satellite broadcast 526 (e.g., via a satellite dish),very high frequency (VHF) or ultra high frequency (UHF) radio frequencycommunication of the broadcast networks 534 (e.g., via an aerialantenna), telephone/computer network interface 528, videorecorder/playback device 506, DVD 514, and/or information stored locallyat system controller 504 or another component of system 500. Further, itwill be appreciated by one skilled in the art, that cable broadcastinput 524, satellite broadcast input 526 and VHF/UHF input 534 maybeneficially receive input from digital broadcast programming anddigital cable programming.

Except for the incorporated teachings of the present invention(described above), system controller 504 is intended to represent abroad category of “computing” devices known in the art. Examples of such“computing” devices include conventional desktop computers as well asInternet “appliance” devices, such as a WebTV™ Internet Terminalavailable from Sony Electronics Inc. of Park Ridge, N.J., or PhilipsConsumer Electronics Company of Knoxville, Tenn. A number of audio andvideo input and output peripherals/interfaces for receiving, digitizingand compressing audio and video signals are also known in the art. It isto be appreciated that the housing size and design for system controller504 may be altered, allowing it to better visually fit into system 500.

It is also to be appreciated that the several entertainment systemcomponents depicted in FIG. 5 can be beneficially combined. By way ofexample, system controller 504 could be integrated intotelevision/monitor 502, DVD 514, or audio/video tuner and amplifier 510.

FIG. 6 illustrates another embodiment of a hardware system suitable foruse with the present invention. In the illustrated embodiment, hardwaresystem 600 includes processor 602 and cache memory 604 coupled to eachother as shown. Additionally, hardware system 600 includes highperformance input/output (I/O) bus 606 and standard I/O bus 608. Hostbridge 610 couples processor 602 to high performance I/O bus 606,whereas I/O bus bridge 612 couples the two buses 606 and 608 to eachother. Coupled to bus 606 are network/communication interface 624,system memory 614, and video memory 616, In turn, display device 618 iscoupled to video memory 616. Coupled to bus 608 is mass storage 620,keyboard and pointing device 622, and I/O ports 626. Collectively, theseelements are intended to represent a broad category of hardware systems,including but not limited to general purpose computer systems based onthe Pentium® processor, Pentium® Pro processor, or Pentium®II processor,manufactured by Intel Corporation of Santa Clara, Calif.

In one embodiment, various electronic devices are also coupled to highperformance I/O bus 606. As illustrated, analog tuner/digitalsatellite/cable devices 628, additional video sources 630, and audiooutputs 632 are also coupled to high performance I/O bus 606.

These elements 602-632 perform their conventional functions known in theart. In particular, network/communication interface 624 is used toprovide communication between system 600 and any of a wide range ofconventional networks, such as an Ethernet, token ring, the Internet,etc. It is to be appreciated that the circuitry of interface 624 isdependent on the type of network the system 600 is being coupled to.

Mass storage 620 is used to provide permanent storage for the data andprogramming instructions to implement the above described functions,whereas system memory 614 is used to provide temporary storage for thedata and programming instructions when executed by processor 602. I/Oports 626 are one or more serial and/or parallel communication portsused to provide communication between additional peripheral deviceswhich may be coupled to hardware system 600.

It is to be appreciated that various components of hardware system 600may be re-arranged. For example, cache 604 may be on-chip with processor602. Alternatively, cache 604 and processor 602 may be packed togetheras a “processor module”, with processor 602 being referred to as the“processor core”. Furthermore, certain implementations of the presentinvention may not require nor include all of the above components. Forexample, mass storage 620, keyboard and pointing device 622, and/ordisplay device 618 and video memory 616 may not be included in system600. Additionally, the peripheral devices shown coupled to standard I/Obus 608 may be coupled to high performance I/O bus 606; in addition, insome implementations only a single bus may exist with the components ofhardware system 600 being coupled to the single bus. Furthermore,additional components may be included in system 600, such as additionalprocessors, storage devices, or memories.

In one embodiment, the method and apparatus for providing subsidiarydata synchronous to primary content data according to the presentinvention as discussed above is implemented as a series of softwareroutines run by hardware system 600 of FIG. 6. In this embodiment, datareceiver 105, video/audio control 115, programming database control 125,and subsidiary data control 135 of FIG. 1 are each implemented as aseries of software routines. These software routines comprise aplurality or series of instructions to be executed by a processor in ahardware system, such as processor 602 of FIG. 6. Initially, the seriesof instructions are stored on a storage device, such as mass storage620. It is to be appreciated that the series of instructions can bestored using any conventional storage medium, such as a diskette,CD-ROM, magnetic tape, DVD, laser disk, ROM, Flash memory, etc. It isalso to be appreciated that the series of instructions need not bestored locally, and could be received from a remote storage device, suchas a server on a network, via network/communication interface 624. Theinstructions are copied from the storage device, such as mass storage620, into memory 614 and then accessed and executed by processor 602. Inone implementation, these software routines are written in the C++programming language. It is to be appreciated, however, that theseroutines may be implemented in any of a wide variety of programminglanguages.

In alternate embodiments, the present invention is implemented indiscrete hardware or firmware. For example, one or more applicationspecific integrated circuits (ASICs) could be programmed with the abovedescribed functions of the present invention. By way of another example,data receiver 105, video/audio control 115, programming database control125, and subsidiary data control 135 of FIG. 1 could be implemented inone or more ASICs of an additional circuit board for insertion intohardware system 600 of FIG. 6.

Thus, a method and apparatus for providing subsidiary data synchronousto primary content data has been described. Whereas many alterations andmodifications of the present invention will be comprehended by a personskilled in the art after having read the foregoing description, it is tobe understood that the particular embodiments shown and described by wayof illustration are in no way intended to be considered limiting.References to details of particular embodiments are not intended tolimit the scope of the claims.

1. A method comprising: receiving primary content data at anentertainment system from a primary external source; receivingsubsidiary data at the entertainment system from a subsidiary externalsource, the subsidiary data being independent of and supplementing theprimary content data; displaying the primary content data; determiningthe identity of the primary content data currently displayed;determining whether subsidiary data supplementing the primary contentdata exists by accessing a storage database using the primary contentdata identity; obtaining the subsidiary data identified in the storagedatabase for display; and displaying the subsidiary data.
 2. The methodof claim 1, further comprising: receiving the subsidiary datacorresponding to a program of the primary content data prior tobeginning receipt of the program; and storing the subsidiary datacorresponding to the program locally.
 3. The method of claim 2, whereinobtaining subsidiary data comprises obtaining the subsidiary data from alocal nonvolatile storage medium.
 4. The method of claim 1, wherein thestep of providing the subsidiary data comprises: determining an elapsedtime of a program of the primary content data; identifying a portion ofthe subsidiary data which corresponds to the program; identifying apiece of the portion of the subsidiary data which corresponds to theelapsed time of the program; and providing the piece concurrently withthe primary content data.
 5. The method of claim 4, wherein identifyinga portion of the subsidiary data comprises accessing a database whichstores a plurality of portions of the subsidiary data.
 6. The method ofclaim 1, wherein the primary content data comprises data of at least oneof a television broadcast, a digital satellite broadcast, an Internetbroadcast, and an audio-only broadcast.
 7. The method of claim 1,wherein determining the identity of the primary content data currentlydisplayed comprises reading an identifier included with the primarycontent data.
 8. The method of claim 1, wherein obtaining the subsidiarydata comprises retrieving the subsidiary data from a memory of theentertainment system.
 9. The method of claim 1, wherein obtaining thesubsidiary data comprises retrieving the subsidiary data from a remoteserver.
 10. The method of claim 1, wherein the subsidiary data comprisesat least one of reference information regarding a program of the primarycontent data, biographical information regarding actors, guests andparticipants of a program of the primary content data andadvertisements.
 11. The method of claim 1, wherein determining theidentity of the primary content data is performed in response to achange in the primary content data currently displayed.
 12. The methodof claim 1, wherein displaying the subsidiary data comprises displayingthe subsidiary data synchronous to the primary content data. 13-37.(canceled)
 38. An entertainment system comprising: a first receiverconfigured to receive primary content data from a primary externalsource; subsidiary data control logic configured to receive subsidiarydata from a subsidiary external source, wherein the subsidiary data isindependent of and supplementary to the primary content data; a storagedevice configured to store the received subsidiary data; a displaydevice configured to display the primary content data; synchronizationlogic operative to determine the identity of the primary content datacurrently displayed; and storage/retrieval logic configured to determinewhether subsidiary data supplementing the primary content data exists byaccessing a storage database using the primary content data identity;wherein the synchronization logic is operative to obtain the subsidiarydata identified in the storage database for display and to provide thesubsidiary data from the storage device to the display devicesynchronous to the primary content data.
 39. The entertainment system ofclaim 38, further comprising: reception logic configured to receive allof the subsidiary data corresponding to a program of the primary contentdata prior to beginning receipt of the program; and storage logicconfigured to control local storing of the subsidiary data correspondingto the program.
 40. The entertainment system of claim 38, wherein thesynchronization logic is further operative to: determine an elapsed timeof a program of the primary content data; identify a portion of thesubsidiary data in the storage device which corresponds to the program;retrieve a piece of the portion of the subsidiary data which correspondsto the elapsed time of the program from the storage device; and providethe retrieved piece to the display device synchronous to the elapsedtime of the program.
 41. The entertainment system of claim 38, furthercomprising reception logic coupled to a remote server, wherein thestorage database includes an identification of a remote server fromwhich subsidiary data may be retrieved and wherein the synchronizationlogic is operative to request that the reception logic retrieve thesubsidiary data from the identified remote server.
 42. An apparatuscomprising: a data receiver configured to receive primary content datafrom a primary external source; subsidiary data control logic,communicatively coupled to the data receiver, configured to receivesubsidiary data from a subsidiary external source, wherein thesubsidiary data is independent of and supplementary to the primarycontent data; synchronization logic operative to determine the identityof the primary content data currently displayed; and storage/retrievallogic configured to determine whether subsidiary data supplementing thecurrently displayed primary content data exists by accessing a storagedatabase using the determined primary content data identity; wherein thesynchronization logic is operative to obtain the subsidiary data fordisplay synchronous to the primary content data.
 43. The apparatus ofclaim 42 further comprising video/audio control logic configured tocombine the primary content data with the subsidiary data and forwardthe combined data to a display or audio device.
 44. The apparatus ofclaim 42 further comprising user interface logic configured to allow auser to interact with the storage/retrieval logic.